package demo03;
//消失的两个数字
class Solution {
    public int[] missingTwo(int[] nums) {
        //将所有数字异或
        int xor_sum = 0;
        for(int num :nums){
            xor_sum = xor_sum ^ num;
        }
        for(int i = 1;i <= nums.length + 2; i++){
            xor_sum = xor_sum ^ i;
        }
        //找目标数字
        int a = 0;
        int b = 0;
        int mask = xor_sum &((-1)*xor_sum);
        for(int i =0;i < nums.length;i++){
            if((mask & nums[i]) == 0){
                a = a ^ nums[i];
            }else{
                b = b ^ nums[i];
            }
        }
        for(int i = 1;i<=nums.length+2;i++){
            if((mask & i) == 0){
                a = a ^ i;
            }else{
                b = b ^ i;
            }
        }
        return new int[]{a,b};
    }
}